package com.atguigu.gmall.index.annotation;

import java.lang.annotation.*;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GmallCache {

    /**
     * 缓存key的前缀
     *
     * @return
     */
    String prefix() default "";

    /**
     * 缓存的过期时间，单位min
     * 默认过期时间30min
     *
     * @return
     */
    int timeout() default 30;

    /**
     * 为了防止缓存雪崩，给缓存过期时间添加随机值
     * 默认随机值范围10min
     *
     * @return
     */
    int random() default 10;

    /**
     * 为了防止缓存击穿，添加分布式锁
     * 分布式锁前缀，默认"lock"
     *
     * @return
     */
    String lock() default "lock:";
}
